/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Rennan
 */
public class Professor {
    
    
    private String nome;
    private String matricula;
    private String telefone;
    private List<Projeto> projetos;
            
    
    public Professor(String _nome, String _mat){
        this(_nome, _mat, "*");
    }
    
    public Professor(String _nome, String _mat, String _tel){
        this.nome = _nome;
        this.matricula = _mat;
        this.telefone = _tel;
        this.projetos = new ArrayList<Projeto>();
    }
    
    
    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }
 

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
    
     public List getProjetos() {
        return this.projetos;
    }
     
     public Projeto getProjeto(String _nome) throws ProjetoInexistenteException{
         for(Projeto p : this.projetos){
             if(p.getNome().equals(_nome))
                 return p;
         }
         throw new ProjetoInexistenteException("Nao ha nenhum projeto com este nome cadastrado a este professor.");
     }
 
    public void addProjeto(Projeto proj) {
        this.projetos.add(proj);
    }
    
    /* ATENÇÃO: 
     Quando for implementar o remover não é simplesmente chamar
     o método remove da lista, mas se o projeto não existe deve
     lançar uma exceção. E devem ser disponibilizadas outras
     maneiras de remover um projeto, por exemplo: recebendo o
     próprio objeto Projeto, o nome do projeto, e até mesmo
     colocando um método pra retornar uma lista de projetos,
     ou seja, caso tenha mais de um e quem estiver pesquisando
     lembra apenas que começa com "Ferramentas para o ...", daí
     se houver mais de um, ele exibe para o usuário a lista dos
     projetos encontrados. Assim, o usuário poderá escolher o
     projeto e remover. */


    public void removerProjeto(String nome) throws RemocaoDeProjetoImpossivelException, ProjetoInexistenteException {
        for(Projeto p : this.projetos){
             if(p.getNome().equals(nome))
                 this.projetos.remove(p);
      }
        throw new RemocaoDeProjetoImpossivelException("Nao foi possível remover o projeto.");
    }

   


    public String toString(){
        String tmp = "";
        tmp += "Nome do Professor(a): " + this.nome + "\nMatrícula: " + this.matricula
                + " | Telefone: " + this.telefone + "\nProjeto(s) desse professor(a)\n";
        for(Projeto projeto: projetos){
            tmp+= projeto.toString();
        }
        
        return tmp;
    }
    
}